package com.ruoyi.vote.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.vote.admin.domain.VoteSign;
import com.ruoyi.vote.admin.domain.bo.VoteExamineBo;
import com.ruoyi.vote.admin.domain.vo.VoteSignVo;
import com.ruoyi.vote.admin.domain.bo.VoteSignBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.vote.app.domain.request.VoteSignReq;
import com.ruoyi.weixin.domain.WxUser;

import java.util.Collection;
import java.util.List;

/**
 * 活动 - 参赛选手管理Service接口
 *
 * @author 筑巢
 * @date 2023-07-17
 */
public interface IVoteSignService extends IService<VoteSign> {

    /**
     * 初始化选手
     */
    void loadingSignCache();

    /**
     * 参赛选手详情详情
     */
    VoteSignVo queryById(Long id);

    /**
     * 查询选手账号信息
     */
    List<WxUser> queryWxUser(Long aid);

    /**
     * 获取排名选手
     * @param aid
     * @return
     */
    List<VoteSign> getRanking(Long aid, Integer num);

    /**
     * 查询活动 - 参赛选手管理列表
     */
    TableDataInfo<VoteSignVo> queryPageList(VoteSignReq bo, PageQuery pageQuery);

    /**
     * 新增活动 - 参赛选手管理
     */
    Boolean insertByBo(VoteSignBo bo);

    /**
     * 修改活动 - 参赛选手管理
     */
    Boolean updateByBo(VoteSign voteSign);

    /**
     * 校验并批量删除活动 - 参赛选手管理信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 计算排名(异步操作)
     */
    void getEventRankings(String eventId);

    /**
     * 报名审核
     */
    Boolean signExamine(VoteExamineBo bo);

    /**
     * 增加热度
     * @param aid
     * @param mid
     */
    void updateWelcomeOne(Long aid,Long mid);
}
